package com.hzqy.persistence.dao.commons;

import com.hzqy.persistence.dao.core.PersistenceDao;
import com.hzqy.web.vo.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Repository
public class CommonsDao extends PersistenceDao<PmsUserVo, Integer>{
	
	protected final Logger LOG = LoggerFactory.getLogger(getClass());
	private final String namespace = this.getNamespace();
	
	public List<SysConfigVo> selectSystemConfig() {
		List<SysConfigVo> sysConfigList = null;
		try {
			sysConfigList = getSqlSession().selectList(namespace+"selectSystemConfig");
		} catch (Exception e) {
			LOG.error("严重错误，系统不可用，请立即检查！！！！！查询系统配置错误-请检查后再使用系统",e);
		}
		if(sysConfigList == null)
			sysConfigList = new ArrayList<SysConfigVo>();
		return sysConfigList;
	}
	
	/**
	 * 查询用户的地域
	 * @param serverid
	 * @return
	 */
	public String selectAreaIdByServerId(String serverid){
		try {
			Object obj = getSqlSession().selectOne(namespace+"selectAreaIdByServerId",serverid);
			return obj!=null?String.valueOf(obj):"571";
		} catch (Exception e) {
			LOG.error("查询用户"+serverid+"的地域错误！",e);
			return "571";
		}
	}
//	/**
//	 * 查询用户的地域
//	 * @param serverid
//	 * @return
//	 */
//	public String selectAreaIdByServerId(String serverid){
//		try {
//			LOG.error("查询用户的地域"+getSqlSession());
//			Object obj = getSqlSession().selectOne(namespace+"selectAreaIdByServerId",serverid);
//			return obj!=null?String.valueOf(obj):"571";
//		} catch (Exception e) {
//			LOG.error("查询用户"+serverid+"的地域错误！",e);
//			return "571";
//		}
//	}
//	/**
//	 * 获取用户所在分组
//	 * @param oss_user_id
//	 * @return
//	 */
//	public int selectUserGroup(String oss_user_id) {
//		try{
//			int userType = (Integer) getSqlSession().selectOne(namespace+"getUserType",oss_user_id);
//			return userType;
//		}catch(Exception e){
//			LOG.error("获取用户所在分组失败",e);
//		}
//		return 0;
//	}
//	/**
//	 * 查询用户信息
//	 * @return
//	 */
//	public UserInfoVo selectUserInfo(UserInfoVo userInfoVo){
//		UserInfoVo userinfo = null;
//		try{
//			userinfo = (UserInfoVo) getSqlSession().selectOne(namespace+"selectUserInfo",userInfoVo);
//		}catch(Exception e){
//			LOG.error("查询用户信息失败",e);
//		}
//		return userinfo;
//	}
//	/**
//	 * 插入用户信息
//	 * @param answerUserVo
//	 * @return 插入后的ID
//	 */
//	public int insertUserInfo(UserInfoVo userInfoVo){
//		try{
//			getSqlSession().insert(namespace+"insertUserInfo",userInfoVo);
//			return 1;
//		}catch(Exception e){
//			LOG.error("插入用户信息失败",e);
//			return 0;
//		}
//	}
//	/**
//	 * 修改用户信息
//	 * @param answerUserVo
//	 * @return
//	 */
//	public int updateUserInfo(UserInfoVo userInfoVo){
//		try{
//			getSqlSession().update(namespace+"updateUserInfo",userInfoVo);
//			return 1;
//		}catch(Exception e){
//			LOG.error("修改用户信息失败",e);
//			return 0;
//		}
//	}



	public List<SysProductVo> selectProductList(Map<String,Object> map) {
		LOG.debug("selectProductById-productid="+map.get("f_sp_id"));
		return getSqlSession().selectList(this.getNamespace() + "selectProductList", map);
	}
	
	public SysProductVo selectProductByParentId(int f_sp_id) {
		return getSqlSession().selectOne(this.getNamespace() + "selectProductByParentId", f_sp_id);
	}

	public List<SysProductVo> selectProductListByCatalogId(int f_catalog_id) {
		return getSqlSession().selectList(this.getNamespace()+"selectProductListByCatalogId",f_catalog_id);
	}
	
	public List<SysProductVo> selectProductListByProductId(int f_sp_id) {
		return getSqlSession().selectList(this.getNamespace()+"selectProductListByProductId",f_sp_id);
	}
	public List<SysProductVo> selectProductListByContentId(int f_cc_id) {
		return getSqlSession().selectList(this.getNamespace()+"selectProductListByContentId",f_cc_id);
	}

	public List<PmsOrgVo> selectOrgCodeByProductId(int f_sp_id) {
		return getSqlSession().selectList(this.getNamespace()+"selectOrgCodeByProductId",f_sp_id);
	}
	
	public UserHistoryVo selectHistory(UserHistoryVo uhv){
		return getSqlSession().selectOne(this.getNamespace() + "selectHistory", uhv);
	}
	
	public List<UserHistoryVo> selectHistoryListByContent(UserHistoryVo uhv,int pageNo,int pageSize) {
		Map<String,Object> map = new HashMap<String, Object>();
		map.put("f_uvh_serverid", uhv.getF_uvh_serverid());
		map.put("f_sp_id", uhv.getF_sp_id());
		map.put("f_uvh_type", uhv.getF_uvh_type());
		map.put("f_cp_cprid", uhv.getF_cp_cprid());
		map.put("firstResult", pageNo);
		map.put("pageSize", pageSize);
		return getSqlSession().selectList(this.getNamespace() + "selectHistoryListByContent", map);
	}
	
	public List<UserHistoryVo> selectHistoryListByMultirate(UserHistoryVo uhv,int pageNo,int pageSize) {
		Map<String,Object> map = new HashMap<String, Object>();
		map.put("f_uvh_serverid", uhv.getF_uvh_serverid());
		map.put("f_sp_id", uhv.getF_sp_id());
		map.put("f_uvh_type", uhv.getF_uvh_type());
		map.put("f_cp_cprid", uhv.getF_cp_cprid());
		map.put("firstResult", pageNo);
		map.put("pageSize", pageSize);
		return getSqlSession().selectList(this.getNamespace() + "selectHistoryListByMultirate", map);
	}
	
	public int insertHistory(UserHistoryVo uhv) {
		return getSqlSession().insert(this.getNamespace() + "insertHistory", uhv);
	}
	
	public int updateHistory(UserHistoryVo uhv) {
		return getSqlSession().update(this.getNamespace() + "updateHistory", uhv);
	}

	public SysProductVo selectProductByAreaId(String areaId,String serviceType) {
		Map<String,Object> map = new HashMap<String, Object>();
		map.put("f_sa_codeid", areaId);
		map.put("f_psap_obligate1", serviceType);
		return getSqlSession().selectOne(this.getNamespace() + "selectProductByAreaId", map);
	}
	
	public List<PmsOrgVo> selectOrgByContentAndCatalogId(String f_cc_name,int f_catalog_id){
		Map<String,Object> map = new HashMap<String, Object>();
		map.put("f_cc_name", f_cc_name);
		map.put("f_catalog_id", f_catalog_id);
		return getSqlSession().selectList(this.getNamespace() + "selectOrgByContentAndCatalogId", map);
	}
	
	public int selectOnDemandCount(UserHistoryVo uhv){
		return getSqlSession().selectOne(this.getNamespace() + "selectOnDemandCount", uhv);
	}
	
	public Map<String,Object> selectDatabaseRuntime(){
		return getSqlSession().selectOne(this.getNamespace() + "selectDatabaseRuntime");
	}
	
	public int insertHistoryTime(UserHistoryTimeVo uhtv) {
		return getSqlSession().insert(this.getNamespace() + "insertHistoryTime", uhtv);
	}
	public int updateHistoryTime(UserHistoryTimeVo uhtv) {
		return getSqlSession().update(this.getNamespace() + "updateHistoryTime", uhtv);
	}
	public UserHistoryTimeVo selectHistoryTime(UserHistoryTimeVo uhtv){
		return getSqlSession().selectOne(this.getNamespace() + "selectHistoryTime", uhtv);
	}
	public List<UserHistoryTimeVo> selectHistoryTimeByDate(Map<String,Object> map){
		return getSqlSession().selectList(this.getNamespace() + "selectHistoryTimeByDate", map);
	}
	
}
